/**
 * 配置信息
 */
//需要压缩的3D文件类型
var fileType = ['json'];

var fs = require('fs');
var path = require('path');
const {
    execSync
} = require('child_process');

fileDisplay(__dirname + '\\assets\\subs\\level\\')

/**
 * 压缩json文件
 * @param {*} filedir 
 */
function minify(fileName, filePath, filedir) {
    if (fileName.indexOf('sceneGIReflection') != -1) return;
    let c = 'json-minify ' + fileName + ' >> ' + fileName + '.temp';
    execSync(c, {
        cwd: filePath
    });
    fs.unlinkSync(filedir);
    let tempFileDir = filedir + '.temp';
    fs.rename(tempFileDir, filedir, () => {
        console.log('压缩成功:', fileName);
    });
}
/**
 * 文件遍历方法
 * @param filePath 需要遍历的文件路径
 */
function fileDisplay(filePath) {
    //根据文件路径读取文件，返回文件列表
    fs.readdir(filePath, function (err, files) {
        if (err) {
            console.warn(err)
        } else {
            //遍历读取到的文件列表
            files.forEach(function (filename) {
                //获取当前文件的绝对路径
                var filedir = path.join(filePath, filename);
                //根据文件路径获取文件信息，返回一个fs.Stats对象
                fs.stat(filedir, function (eror, stats) {
                    if (eror) {
                        console.warn('获取文件stats失败');
                    } else {
                        var isFile = stats.isFile(); //是文件
                        var isDir = stats.isDirectory(); //是文件夹
                        if (isFile) {
                            let sp = filedir.split('.');
                            let type = sp[sp.length - 1];
                            let f = false;
                            fileType.forEach(item => {
                                if (item == type)
                                    f = true;
                            })
                            if (f) {
                                minify(filename, filePath, filedir);
                            }
                        }
                        if (isDir) {
                            fileDisplay(filedir); //递归，如果是文件夹，就继续遍历该文件夹下面的文件
                        }
                    }
                })
            });
        }
    });
}